home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-05-01 | 3.0 KB | 93 lines | [TEXT/MPS ] |
- ;
- ; File: Disks.a
- ;
- ; Contains: Disk Driver Interfaces.
- ;
- ; Version: Technology: System 7.5
- ; Release: Universal Interfaces 3.0d3 on Copland DR1
- ;
- ; Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved.
- ;
- ; Bugs?: If you find a problem with this file, send the file and version
- ; information (from above) and the problem description to:
- ;
- ; Internet: apple.bugs@applelink.apple.com
- ; AppleLink: APPLE.BUGS
- ;
- ;
- IF &TYPE('__DISKS__') = 'UNDEFINED' THEN
- __DISKS__ SET 1
-
- IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
- include 'Types.a'
- ENDIF
- IF &TYPE('__OSUTILS__') = 'UNDEFINED' THEN
- include 'OSUtils.a'
- ENDIF
-
- sony EQU 0
- hard20 EQU 1
- ;
- ; Note:
- ;
- ; qLink is usually the first field in queues, but back in the MacPlus
- ; days, the DrvSts record needed to be expanded. In order to do this without
- ; breaking disk drivers that already added stuff to the end, the fields
- ; where added to the beginning. This was originally done in assembly language
- ; and the record was defined to start at a negative offset, so that the qLink
- ; field would end up at offset zero. When the C and pascal interfaces where
- ; made, they could not support negative record offsets, so qLink was no longer
- ; the first field. Universal Interfaces are auto generated and don't support
- ; negative offsets for any language, so DrvSts in Disks.a has qLinks at a
- ; none zero offset. Assembly code which switches to Universal Interfaces will
- ; need to compensate for that.
- ;
- ;
- DrvSts RECORD 0
- track ds.w 1 ; offset: $0 (0) ; current track
- writeProt ds.b 1 ; offset: $2 (2) ; bit 7 = 1 if volume is locked
- diskInPlace ds.b 1 ; offset: $3 (3) ; disk in drive
- installed ds.b 1 ; offset: $4 (4) ; drive installed
- sides ds.b 1 ; offset: $5 (5) ; -1 for 2-sided, 0 for 1-sided
- qLink ds.l 1 ; offset: $6 (6) ; next queue entry
- qType ds.w 1 ; offset: $A (10) ; 1 for HD20
- dQDrive ds.w 1 ; offset: $C (12) ; drive number
- dQRefNum ds.w 1 ; offset: $E (14) ; driver reference number
- dQFSID ds.w 1 ; offset: $10 (16) ; file system ID
- twoSideFmt ds.b 1 ; offset: $12 (18) ; after 1st rd/wrt: 0=1 side, -1=2 side
- needsFlush ds.b 1 ; offset: $13 (19) ; -1 for MacPlus drive
- diskErrs ds.w 1 ; offset: $14 (20) ; soft error count
- ORG 18
- driveSize ds.w 1 ; offset: $12 (18)
- driveS1 ds.w 1 ; offset: $14 (20)
- driveType ds.w 1 ; offset: $16 (22)
- driveManf ds.w 1 ; offset: $18 (24)
- driveChar ds.w 1 ; offset: $1A (26)
- driveMisc ds.b 1 ; offset: $1C (28)
- ORG 30
- sizeof EQU * ; size: $1E (30)
- ENDR
- ;
- ; pascal OSErr DiskEject(short drvNum)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION DiskEject
- ENDIF
-
- ;
- ; pascal OSErr SetTagBuffer(void *buffPtr)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION SetTagBuffer
- ENDIF
-
- ;
- ; pascal OSErr DriveStatus(short drvNum, DrvSts *status)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION DriveStatus
- ENDIF
-
- ENDIF ; __DISKS__
-
-